Azure Developer CLI がプレビューで利用出来るようになりました
いわさです。
Azure Developer CLI (azd) がプレビューで公開されました。
クラウドアプリケーション開発者のためのCLIツールで、主にアプリケーションとAzureインフラの初期化とデプロイを行うことが出来ます。
サンプルリポジトリにテンプレートが用意されていて、アプリコード、ツール、インフラが含まれています。
本日時点でテンプレートは以下が用意されています。
- Node.js
- Azure App Service + Azure CosmosDB
- Azure Container Apps + Azure CosmosDB
- Azure Static Web Apps + Azure Functions + Azure CosmosDB
- Python
- Azure App Service + Azure CosmosDB
- Azure Container Apps + Azure CosmosDB
- Azure Static Web Apps + Azure Functions + Azure CosmosDB
- C#
- Azure App Service + Azure CosmosDB
加えて、Java と Azure Kubernetes Service がサポートされる予定となっています。
本日はこのうちの C# のテンプレートを試しに使ってみました。
インストールと初期化
ツールは Windows, Linux, macOS とクロスプラットフォームで提供されています。
実行環境についてもローカルからコンテナと様々な環境がサポートされていますが、今回は Remote Containers を使った DevContainer
を使ってみました。
Docker が必要で、かつコンテナの初期化に少し時間かかるのがデメリットですが、依存関係など含めクリーンにローカル環境保てるので良さそうかなと思いました。
Get started using Azure Developer CLI (azd) Preview | Microsoft Docs
この記事では、macOS上でセットアップを進めていきます。
% curl -fsSL https://aka.ms/install-azd.sh | bash Archive: /var/folders/d_/_8lb414x7_sg_kc6y534t_s40000gn/T/tmp.OCEwXwd3/azd-darwin-amd64.zip inflating: /var/folders/d_/_8lb414x7_sg_kc6y534t_s40000gn/T/tmp.OCEwXwd3/azd-darwin-amd64 install-azd: Successfully installed to /usr/local/bin/azd
続いで、テンプレートから初期化を行います。
どうやらazd up
からテンプレートを指定して一気にAzureリソース作成まで出来るようなのですが、init
から初めてみました。
% azd init --template todo-csharp-cosmos-sql Initializing a new project in /Users/iwasa.takahito/work/hoge0713azd ? Please enter a new environment name: iwasa0713 ? Please select an Azure location to use: 9. (Asia Pacific) Japan East (japaneast) ? Please select an Azure Subscription to use: 1. ほげほげ (hogehoge-hoge-hoge-hoge-hogehogehoge)
Environment Nameは全てのAzureリソースのプレフィックスに使われるとのドキュメント記述がありました。
後述しますが、どうやらリソースグループのプレフィックスとしては使われるようですが全リソースに使われるわけではないようです。
Location と Subscription の選択がスマートで「すげえや」と思いました。
なお、この時点ではローカルにアプリケーションやインフラのコードテンプレート一式を作成するだけで、Azure上へはデプロイはされていません。
テンプレートの構成
今回は特に修正せずにそのままデプロイしちゃいますが、テンプレートの構成を軽く見ておきたいと思います。
まず、アプリケーションコードとしてはフロントのWebアプリと、バックエンドのAPIが用意されています。
Webアプリは React で構築されていて、API は ASP.NET Core で構築されていました。
そしてインフラストラクチャは、Bicepで記述されていますね!今流行りの。
実際には、ここでアプリケーションやインフラ構成をごにょごにょカスタマイズする流れになるかと思います。
デプロイ
続いてデプロイを行います。
本日は先程のテンプレートをそのままデプロイします。
まずは、azd up
すれば良いようです。
これによって、全てのAzureリソースが作成され、アプリケーションもデプロイされるようです。
個別に行うにはazd provision
でリソースのプロビジョニングを行い、azd deploy
でアプリのデプロイを行う流れのようです。
$ azd up WARNING: A web browser has been opened at https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize. Please continue the login in the web browser. If no web browser is available or if the web browser fails to open, use device code flow with `az login --use-device-code`. WARNING: The following tenants don't contain accessible subscriptions. Use 'az login --allow-no-subscriptions' to have tenant level access. Provisioning Azure resources can take some time. You can view detailed progress in the Azure Portal: https://portal.azure.com/#blade/HubsExtension/DeploymentDetailsBlade/overview/id/%2Fsubscriptions%2Fhogehoge-hoge-hoge-hoge-hogehogehogef%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2Fiwasa0713 Created Azure resources Deploying service api Deployed service api - Endpoint: https://app-api-7pqzunb7xd73o.azurewebsites.net/ Deploying service web Deployed service web - Endpoint: https://app-web-7pqzunb7xd73o.azurewebsites.net/ View the resources created under the resource group iwasa0713-rg in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/hogehoge-hoge-hoge-hoge-hogehogehoge/res
次々とAzureリソースが作成されています。
初期化時に指定したEnvironment Name
がプレフィックスに使われるとドキュメントには記述があったのですが、リソースグループにしか使われていないですね。
こういう気づいた点があればどんどんフィードバックしましょうね。
完了すると、出力にエンドポイントが表示されますので、service web
エンドポイントへアクセスしてみます。
作成されたリソースも少し観察してみましょう。
Bicepテンプレートを見れば把握出来るのでしょうけど、ここでは実際にデプロイされたものを見てみます。
Web と API はそれぞれ別の App Service がデプロイされていて、 App Service Plan は共通です。
App Service Plan は Windows の Basic 1 がプロビジョニングされています。
そして、ダッシュボードを始め、アプリケーション監視のために Application Insights や Log Analytics Workspace などもデプロイされていました。
ダッシュボードは以下のような形式です。
全体像を図にすると以下のような形でしょうか。
データベースは Cosmos DB でした。
後始末
なお、後始末のコマンドも用意されていました。
azd down
すると、Azure上からリソースが削除されます。リソースグループごとされました。
さいごに
本日は、Azure Developer CLI を使ってみました。
所感としては AWS でいう SAM CLI に似ていますね。
クラウドワークロード用のアプリケーションとインフラのテンプレートが用意されていて、デプロイからパイプライン構築の仕組みまでが CLI で提供されている開発者ツールという感じです。
本環境でデバッグ実行を行ったり、カスタムテンプレートを作成することも出来ます。
詳細は以下をご参照ください。
- Run and debug apps enabled for Azure Developer CLI (azd) Preview | Microsoft Docs
- Make your project compatible with Azure Developer CLI (azd) Preview | Microsoft Docs
また、Azure Developer CLI は現在プレビューです。
気になった点はどんどんフィードバックしましょう!